// 服务器全部接口返回的数据类型
export interface ResponseData {
   code: number,
   message: string,
   ok: boolean
}

// SPU数据的ts类型
export interface SpuData {
   id?: number,   //SPU对象的ID
   spuName: string,  //SPU的名称
   description: string, //SPU的描述
   category3Id: string | number, //三级分类id
   tmId: number | string,  //对应品牌的id
   spuSaleAttrList: null | SaleAttr[], //销售属性数据
   spuImageList: null | SpuImg[],   //商品已有图片的数据
}

// 数组：元素都是已有SPU数据类型
export type Records = SpuData[]

// 获取已有的SPU接口返回的数据ts类型
export interface HasSpuResponseData extends ResponseData {
   data: {
      records: Records,
      total: number,
      size: number,
      current: number,
      searchCount: boolean,
      pages: number
   }
}

// 品牌数据的ts类型
export interface TradeMark {
   id: number,
   tmName: string,
   logoUrl: string
}
// 品牌接口返回的数据ts类型
export interface AllTradeMarkResponseData extends ResponseData {
   data: TradeMark[]
}

// 商品图片的ts类型
export interface SpuImg {
   id?: number,
   createTime?: string,
   updateTime?: string,
   spuId?: number,
   imgName?: string,
   imgUrl?: string,
   name?: string,
   url?: string
}
export type SpuImgArr = SpuImg[]
// 已有SPU的照片墙接口返回的数据的ts类型
export interface SpuHasImgResponseData extends ResponseData {
   data: SpuImg[]
}

// 已有的销售属性值对象的ts类型
export interface SaleAttrValue {
   id?: number,
   createTime?: null,
   updateTime?: null,
   spuId?: number,
   baseSaleAttrId: number | string,
   saleAttrValueName: string,
   saleAttrName?: string,
   isChecked?: null
}
// 存储已有的销售属性值数组类型
export type spuSaleAttrValueList = SaleAttrValue[]
// 销售属性对象ts类型
export interface SaleAttr {
   id?: number,
   createTime?: null,
   updateTime?: null,
   spuId?: number,
   baseSaleAttrId: number | string,
   saleAttrName: string,
   flag?: boolean,
   saleAttrValue?: string,
   spuSaleAttrValueList: spuSaleAttrValueList
}
// SPU已有的销售属性接口返回的数据ts类型
export interface SpuSaleAttrResponseData extends ResponseData {
   data: SaleAttr[]
}

// 全部的销售属性的ts类型
export interface AllSaleAttr {
   id: number,
   name: string
}
// 已有的全部销售数据接口返回的数据的ts类型
export interface AllSaleAttrResponseData extends ResponseData {
   data: AllSaleAttr[]
}

// 收集sku所需的数据
export interface Attr { //平台属性的收集
   attrId: string | number,   //平台属性的id
   valueId: string | number,  //属性值的id
}
export interface saleAttr {   //销售属性的收集
   saleAttrId: string | number,  //属性id
   saleAttrValueId: string | number,   //属性值id
}
export interface SkuData {
   category3Id: string | number, //三级分类的id
   spuId: string | number, //已有的SPU的id
   tmId: string | number, //SPU品牌的id
   skuName: string,  //sku的名字
   price: string | number, //sku价格
   weight: string | number,   //sku重量
   skuDesc: string,  //sku的描述
   skuAttrValueList?: Attr[],
   skuSaleAttrValueList?: saleAttr[],
   skuDefaultImg: string   //sku图片地址
}
// 获取sku数据接口返回数据的ts类型
export interface SkuInfoResponseData extends ResponseData {
   data: SkuData[]
}